// function getUserInfo (callback) {
//   setTimeout(() => {
//     const userInfo = { id: 1, name: 'John Doe' };
//     callback(userInfo);
//   }, 1000);
// }

// function getOrders (userId, callback) {
//   setTimeout(() => {
//     const orders = [{ id: 101, product: 'Laptop' }, { id: 102, product: 'Smartphone' }];
//     callback(orders);
//   }, 1000);
// }

// function getBillingInfo (orderId, callback) {
//   setTimeout(() => {
//     const billingInfo = { orderId: orderId, amount: 999.99 };
//     callback(billingInfo);
//   }, 1000);
// }

// 回调地狱的示例
// getUserInfo((user) => {
//   console.log('用户信息:', user);
//   getOrders(user.id, (orders) => {
//     console.log('用户订单:', orders);
//     getBillingInfo(orders[0].id, (billingInfo) => {
//       console.log('账单信息:', billingInfo);
//       // 这里可以继续嵌套更多的异步操作...
//     });
//   });
// });



// 1.使用定时器解释异步操作


// 2.异步请求中的 地狱回调 


// 3. 使用 Promise 或 async/await 来处理异步操作 简介


// 4. 详解 Promise async/await 

// 4.1 http协议



// 5.异步操作 ajax 网络请求


// 6. 异步操作 ajax 存在的地狱回调 

// 7.使用  Promise async/await  解决 异步操作 ajax 存在的地狱回调 


// 8. jquery 和 axios 类库使用 

function timeout (ms) {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, ms, 'done222');
  });
}

timeout(100).then((value) => {
  console.log(value);
});